package pt.ipleiria.estg.dei.ei.es2.bio;

import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.test.ActivityInstrumentationTestCase2;
import android.widget.TextView;

import com.robotium.solo.Solo;

/**
 * Created by Nuno on 05-03-2015.
 */
public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActivity> {

    private Solo solo;

    public MainActivityTest(){
        super(MainActivity.class);
    }

    @Override
    public void setUp() throws Exception {
        solo = new Solo(getInstrumentation(), getActivity());
    }

    @Override
    public void tearDown() throws Exception {
        solo.finishOpenedActivities();
    }

    // Dado que estou na aplicação,
    // Quando pressiono o botão "I'm here"
    // E as informações do meu contacto estão preenchidas (pelo menos nome e email),
    // Então deve ser-me exibida uma mensagem de confirmação da activação desta funcionalidade.
    public void testConfirmationDialog() throws Exception{
        goToConfirmationDialog();

        assertTrue("--------Não foi encontrado o título da AlertDialog--------", solo.searchText(getActivity().getString(R.string.confirmationTitle)));
    }

    // Dado que estou na mensagem de confirmação da funcionalidade "I'm here",
    // Quando pressiono no botão "Sim" e tenho rede,
    // Então os meus dados devem ser submetidos e partilhados com os restantes participantes que activaram a funcionalidade "I'm here"
    // E o botão deve mudar para o estado activo.
    public void testCheckIn() throws Exception{
        goToConfirmationDialog();

        solo.clickOnButton(getActivity().getString(R.string.oKBtn));

        solo.waitForActivity(ParticipantsList.class, 3000);

        solo.assertCurrentActivity("--------Não foi para a lista de participantes!!--------", ParticipantsList.class);

        // verifica se o icon mudou para o group
        TextView v = (TextView) getActivity().findViewById(R.id.action_checkin);

        Bitmap expected = ((BitmapDrawable) getActivity().getDrawable(R.drawable.ic_action_group)).getBitmap();

        //A imagem esta sempre no indice [0]
        Bitmap actual = ((BitmapDrawable) v.getCompoundDrawables()[0]).getBitmap();

        assertTrue("--------O icon não mudou!!--------", actual.sameAs(expected));
    }

    private void goToConfirmationDialog() {
        solo.unlockScreen();
        solo.clickOnActionBarItem(R.id.action_checkin);
    }

}
